<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title></title>
  <!--引入Vue-->
  <script type="text/javascript" src="../js/vue.js"></script>
</head>
<body>
<div class="root">
  <h1>人员列表</h1>
  <button @click="updateMei">更新马冬梅的信息</button>
  <ul>
    <li v-for="(person,index) in persons" :key="person.id">
      {{ person.name }}-{{ person.age }}-{{index}}
    </li>
  </ul>
</div>
</body>

<script type="text/javascript">
  new Vue({
    el: '.root',
    data: {
      persons: [
        {id: '001',name: '马冬梅',age: 18,gender: '女'},
        {id: '002',name: '周冬雨',age: 14,gender: '女'},
        {id: '003',name: '周杰伦',age: 15,gender: '男'},
        {id: '004',name: '温兆伦',age: 15,gender: '男'},
      ],
    },
    methods:{
      /**
       * vue将被侦听的数组的变更方法进行了包裹,所以他们也将触发视图更新,这些方法包括
       * push,pop,shift,unshift,splice,sort,reverse
       * 用这些方法才会触发视图更新,或者用Vue.set
       */
      updateMei(){
        // this.persons[0].name = '马保国'
        // this.persons[0].age = 69
        // this.persons[0].gender = '男'
        //上面的写法是可以的,但是下面的写法就不行,为什么?
        // this.persons[0] = {id: '001',name: '马保国',age: 69,gender: '男'}

        // 这样就可以
        this.persons.splice(0,1,{id: '001',name: '马保国',age: 69,gender: '男'})
      }
    }
  })
</script>
</html>
